//#include <iostream>  
//#include <string>  
//using namespace std;
//
//namespace ouyang
//{
//    class water
//    {
//    public: 
//        virtual void print() const = 0;  
//
//    protected:
//        string _Date_of_manufacture = "1900-1-1";
//        string _ml = "550ml";
//        string _Origin = "中国";
//        int _price = 0;
//    };
//
//    class NF : public water
//    {
//    public:
//        void print() const override
//        {
//            cout << "生成日期: " << _Date_of_manufacture << endl;
//            cout << "水的容量: " << _ml << endl;
//            cout << "水的产地: " << _Origin << endl;
//            cout << "水的价格: " << _price << endl;
//            cout << "水的品牌: " << _brand << endl;
//        }
//    protected:
//        string _brand = "有点甜水";
//    };
//
//    class WHH : public water
//    {
//    public:
//        void print() const override
//        {
//            cout << "生成日期: " << _Date_of_manufacture << endl;
//            cout << "水的容量: " << _ml << endl;
//            cout << "水的产地: " << _Origin << endl;
//            cout << "水的价格: " << _price << endl;
//            cout << "水的品牌: " << _brand << endl;
//        }
//    protected:
//        string _brand = "哈哈笑水";
//    };
//}
//
//int main()
//{
//    ouyang::NF nf;
//    ouyang::WHH whh;
//    nf.print();
//    whh.print();
//    return 0;
//}

﻿#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <algorithm>
#pragma execution_character_set("utf-8")
using namespace std;

// c++ 中的继承
// 我们看以下学校信息管理系统的学生类和老师类
// 在大部分的信息方面是一致的，如果这样分成两个类都实现有点冗余


class Student
{
public:
	// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证
	void identity()
	{
		// ...
	}

	// 学习
	void study()
	{
		// ...
	}

protected:
	string _name = "欧阳";
	string _address;
	string _tel;
	int _age = 19;

	int _stuid;
};

class Teacher
{
public:
	// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证
	void identity()
	{
		// ...
	}
	// 授课
	void teaching()
	{
		//...
	}
protected:
	string _name = "欧阳";
	string _address;
	string _tel;
	int _age = 19;

	string _title;
};


// 我们只需定义一个Person类，将公共成员放入其中，然后继承复用即可
class Person
{
public:
	// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证
	void identity()
	{
		cout << "void identity()" << endl;
		// ...
	}
protected:
	string _name = "欧阳";	// 姓名
	string _address;		// 地址
	string _tel;			// 电话
	int _age = 19;			// 年龄
};

class Student : public Person
{
public:
	// 学习
	void study()
	{
		cout << "void study()" << endl;
		// ...
	}
protected:
	int _stuid; // 学号
};

class Teacher : public Person
{
public:
	// 授课
	void teaching()
	{
		cout << "void teaching()" << endl;
		//...
	}
protected:
	string _title;	//职位
};

int main()
{
	Student s;
	Teacher t;

	s.identity();
	s.study();

	t.identity();
	t.teaching();

	return 0;
}